package com.ruoyi.training.service;

import java.util.List;

import com.ruoyi.training.domain.Registration;
import com.ruoyi.training.dto.ApplicationFormData;
import com.ruoyi.training.dto.TrainingProgress;
import com.ruoyi.training.dto.registration.RegistrationDto;
import com.ruoyi.training.dto.registration.RegistrationImport;
import com.ruoyi.training.vo.registration.RegistrationGroupVo;
import com.ruoyi.training.vo.registration.RegistrationSubmitVo;
import com.ruoyi.training.vo.registration.RegistrationVo;

/**
 * 报名Service接口
 * 
 * @author hcc
 * @date 2025-09-17
 */
public interface IRegistrationService 
{
    /**
     * 查询报名
     * 
     * @param registrationId 报名主键
     * @return 报名
     */
    public RegistrationDto selectRegistrationByRegistrationId(String registrationId);

    /**
     * 查询报名列表
     * 
     * @param registration 报名
     * @return 报名集合
     */
    public List<Registration> selectRegistrationList(Registration registration);

    /**
     * 新增报名
     * 
     * @param registration 报名
     * @return 结果
     */
    public int insertRegistration(Registration registration);

    /**
     * 修改报名
     * 
     * @param registration 报名
     * @return 结果
     */
    public int updateRegistration(Registration registration);

    /**
     * 批量删除报名
     * 
     * @param registrationIds 需要删除的报名主键集合
     * @return 结果
     */
    public int deleteRegistrationByRegistrationIds(String[] registrationIds);

    /**
     * 删除报名信息
     * 
     * @param registrationId 报名主键
     * @return 结果
     */
    public int deleteRegistrationByRegistrationId(String registrationId);

    /**
     * 查询报名列表
     *
     * @param registrationVo 报名
     * @return 报名集合
     */
    public List<RegistrationDto> selectList(RegistrationVo registrationVo);

    /**
     * 新增报名
     *
     * @param registrationSubmitVo 报名
     * @return 结果
     */
    public int addRegistration(RegistrationSubmitVo registrationSubmitVo);

    /**
     * 修改报名
     *
     * @param registrationSubmitVo 报名
     * @return 结果
     */
    public int update(RegistrationSubmitVo registrationSubmitVo);
    /**
     * 逻辑删除报名
     */
    public int removeRegistrationByRegistrationIds(String[] registrationIds);

    /**
     * 导入报名信息
     * @param registrationImportList
     * @param updateSupport
     * @param operName
     * @return
     */
    public String importRegistration(List<RegistrationImport> registrationImportList, boolean updateSupport, String operName);
    /**
     * 新增集体报名
     */
    public int addRegistrationGroup(RegistrationGroupVo registrationGroupVo);

    /**
     * 查询报名数据通过ids
     * @param registrationIds
     * @return
     */
    public List<ApplicationFormData> selectRegistrationByIds(String[] registrationIds);

    /**
     * 查询培训进度
     * lqx
     */
    public List<TrainingProgress> selectListTrainingProgress(String studentId);

    /**
     * 个人报名列表
     */
    public List<RegistrationDto> personRegistrationList(RegistrationVo registrationVo);
}
